<?php

namespace JingdongApi\Models;

/**
 * API配置类
 * 
 * @package JingdongApi\Models
 */
class ApiConfig
{
    /**
     * 应用密钥
     * @var string
     */
    public $appKey;
    
    /**
     * 应用密码
     * @var string
     */
    public $appSecret;
    
    /**
     * 商户号
     * @var string
     */
    public $merchantNo;
    
    /**
     * 是否沙箱模式
     * @var bool
     */
    public $sandboxMode;
    
    /**
     * 超时时间（秒）
     * @var int
     */
    public $timeout;
    
    /**
     * 用户代理
     * @var string
     */
    public $userAgent;
    
    /**
     * 是否启用日志
     * @var bool
     */
    public $enableLog;
    
    /**
     * 构造函数
     * 
     * @param array $config 配置数组
     */
    public function __construct($config = [])
    {
        $this->appKey = $config['app_key'] ?? '';
        $this->appSecret = $config['app_secret'] ?? '';
        $this->merchantNo = $config['merchant_no'] ?? '';
        $this->sandboxMode = $config['sandbox_mode'] ?? false;
        $this->timeout = $config['timeout'] ?? 30;
        $this->userAgent = $config['user_agent'] ?? 'JingdongApiSDK-PHP/1.0.0';
        $this->enableLog = $config['enable_log'] ?? true;
    }
    
    /**
     * 验证配置
     * 
     * @throws \InvalidArgumentException
     */
    public function validate()
    {
        if (empty($this->appKey)) {
            throw new \InvalidArgumentException('app_key 不能为空');
        }
        
        if (empty($this->appSecret)) {
            throw new \InvalidArgumentException('app_secret 不能为空');
        }
        
        if (empty($this->merchantNo)) {
            throw new \InvalidArgumentException('merchant_no 不能为空');
        }
    }
}
